package userInterface.tool;

import javax.swing.*;
import java.awt.*;

import static java.lang.Thread.sleep;

//比较和动画所使用的直观的条形
public class Bar extends JLabel {
    private Rectangle rectangle;
    /*
    * rectangle是一个包含左上角点和长宽的一个类
    * */
    private Point point;
    /*
    * 表示左上角的位置坐标(x,y)
    * */

    public Bar(Rectangle rectangle,int num){
        super(String.valueOf(num),SwingConstants.CENTER);
        setForeground(Color.white);
        setFont(new Font("Arial",1,30));
        point=rectangle.getLocation();
        this.rectangle=rectangle;
        setBounds(rectangle);
        setOpaque(true);
        setBackground(new Color(220, 79, 79));
    }

    public void movX(Point destination) throws InterruptedException {
        /*
        * 这个方法用于实现x轴的移动,参数表示移动的目标位置
        * */
        //todo
        if (point.x<destination.x) {
            while (point.x<destination.x) {
                //System.out.println("横坐标目前位置："+point.x);
                point.x++;
                rectangle.x++;
                this.setBounds(rectangle);
                sleep(1);
            }
        }
        if (point.x>destination.x){
            while (point.x>destination.x) {
               // System.out.println("横坐标目前位置："+point.x);
                point.x--;
                rectangle.x--;
                this.setBounds(rectangle);
                sleep(1);
            }
        }
    }
    public void movY(Point destination) throws InterruptedException {
        /*
        * 这个方法用于实现y轴的移动,参数表示移动的目标位置
        * */
        //todo
        if (point.y>destination.y) {
            while (point.y>destination.y) {
               // System.out.println("纵坐标目前位置："+point.y);
                point.y--;
                rectangle.y--;
                this.setBounds(rectangle);
                sleep(1);
            }
        }
        if (point.y<destination.y){
            while (point.y<destination.y) {
               // System.out.println("纵坐标目前位置："+point.y);
                point.y++;
                rectangle.y++;
                this.setBounds(rectangle);
                sleep(1);
            }
        }
    }

    public Rectangle getRectangle() {
        return rectangle;
    }

    public Point getPoint() {
        return point;
    }
}
